package com.zhengshang.api.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zhengshang.common.annotation.Excel;
import com.zhengshang.common.core.domain.BaseEntity;

/**
 * 话费充值记录对象 app_bill_record
 *
 * @author zhengshang
 * @date 2021-06-07
 */
public class AppBillRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 记录ID
     */
    private Long recordId;

    /**
     * 充值用户
     */
    @Excel(name = "充值用户")
    private Long userId;

    /**
     * 面额
     */
    @Excel(name = "面额")
    private BigDecimal money;

    /**
     * 利润
     */
    private BigDecimal profitsAmount;

    /**
     * 是否快充
     */
    private Integer fast;

    private Integer productType;
    private String areaName;


    /**
     * 订单金额
     */
    @Excel(name = "订单金额")
    private BigDecimal orderPrice;

    /**
     * 充值的手机号
     */
    @Excel(name = "充值的手机号")
    private String phone;

    /**
     * 充值记录ID
     */
    private Long payId;

    /**
     * 订单号
     */
    private String orderNum;

    /**
     * 卡密
     */
    private String cardPassword;

    /**
     * 福禄商品ID
     */
    @Excel(name = "福禄商品ID")
    private String productId;

    /**
     * 福禄平台订单ID
     */
    @Excel(name = "福禄平台订单ID")
    private String fuluOrderId;

    /**
     * 订单状态(1充值中,2充值失败,3充值成功,4未处理)
     */
    @Excel(name = "订单状态(1充值中,2充值失败退款中...,3充值成功,4未处理,5已退款,6退款失败)")
    private String orderState;

    /**
     * 交易完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "交易完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date chargeFinishTime;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "退款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date refundTime;

    /**
     * 运营商流水号
     */
    private String operatorSerialNumber;

    /**
     * 订单状态
     */
    private String orderStateStr;

    public Integer getFast() {
        return fast;
    }

    public void setFast(Integer fast) {
        this.fast = fast;
    }

    public void setRecordId(Long recordId) {
        this.recordId = recordId;
    }

    public Long getRecordId() {
        return recordId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setMoney(BigDecimal money) {
        this.money = money;
    }

    public BigDecimal getMoney() {
        return money;
    }

    public BigDecimal getProfitsAmount() {
        return profitsAmount;
    }

    public void setProfitsAmount(BigDecimal profitsAmount) {
        this.profitsAmount = profitsAmount;
    }

    public void setOrderPrice(BigDecimal orderPrice) {
        this.orderPrice = orderPrice;
    }

    public BigDecimal getOrderPrice() {
        return orderPrice;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPhone() {
        return phone;
    }

    public void setPayId(Long payId) {
        this.payId = payId;
    }

    public Long getPayId() {
        return payId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public String getProductId() {
        return productId;
    }

    public void setFuluOrderId(String fuluOrderId) {
        this.fuluOrderId = fuluOrderId;
    }

    public String getFuluOrderId() {
        return fuluOrderId;
    }

    public void setOrderState(String orderState) {
        this.orderState = orderState;
    }

    public String getOrderState() {
        return orderState;
    }

    public void setChargeFinishTime(Date chargeFinishTime) {
        this.chargeFinishTime = chargeFinishTime;
    }

    public Date getChargeFinishTime() {
        return chargeFinishTime;
    }

    public void setOperatorSerialNumber(String operatorSerialNumber) {
        this.operatorSerialNumber = operatorSerialNumber;
    }

    public String getOperatorSerialNumber() {
        return operatorSerialNumber;
    }

    public String getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }

    public String getCardPassword() {
        return cardPassword;
    }

    public void setCardPassword(String cardPassword) {
        this.cardPassword = cardPassword;
    }

    public Date getRefundTime() {
        return refundTime;
    }

    public void setRefundTime(Date refundTime) {
        this.refundTime = refundTime;
    }

    public String getOrderStateStr() {
        return orderStateStr;
    }

    public void setOrderStateStr(String orderStateStr) {
        this.orderStateStr = orderStateStr;
    }

    public Integer getProductType() {
        return productType;
    }

    public void setProductType(Integer productType) {
        this.productType = productType;
    }

    public String getAreaName() {
        return areaName;
    }

    public void setAreaName(String areaName) {
        this.areaName = areaName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("recordId", getRecordId())
                .append("userId", getUserId())
                .append("money", getMoney())
                .append("orderPrice", getOrderPrice())
                .append("phone", getPhone())
                .append("payId", getPayId())
                .append("productId", getProductId())
                .append("fast", getFast())
                .append("productType", getProductType())
                .append("areaName", getAreaName())
                .append("fuluOrderId", getFuluOrderId())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("orderState", getOrderState())
                .append("chargeFinishTime", getChargeFinishTime())
                .append("operatorSerialNumber", getOperatorSerialNumber())
                .append("remark", getRemark())
                .append("orderNum", getOrderNum())
                .append("refundTime", getRefundTime())
                .append("orderStateStr", getOrderStateStr())
                .toString();
    }
}
